// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Scopri le Promozioni Esclusive di 1win Casino: Divertiti al Casinò Online in Italiano!

Se stai cercando una nuova esperienza di casinò online in Italia, non cercare oltre 1win Casino. Con le sue esclusive promozioni, 1win Casino offre un’occasione unica per divertirsi e vincere.
Scopri ora le promozioni esclusive di 1win Casino e approfitta di incredibili offerte di benvenuto, bonus di ricarica settimanali e tornei di slot giornalieri.
Non perdere l’opportunità di vincere grandi premi con le esclusive promozioni di 1win Casino, disponibili solo per i giocatori italiani.
Iscriviti oggi a 1win Casino e inizia subito a giocare ai tuoi giochi di casinò preferiti in un ambiente sicuro e affidabile.
Non dimenticare di controllare regolarmente il sito web di 1win Casino per le ultime promozioni ed eventi esclusivi.
Non perdere l’occasione di vincere alla grande con le promozioni esclusive di 1win Casino, il casinò online italiano che offre divertimento e vincite!

Gioca al Casinò Online in Italiano con i Bonus e Promozioni di 1win Casino!

Se stai cercando un’esperienza di gioco d’azzardo online di prima classe in Italia, non cercare oltre 1win Casino! Iscriviti oggi e approfitta dei loro generosi bonus e promozioni per aumentare le tue possibilità di vincita. Con una vasta gamma di giochi da casinò online tra cui scegliere, da slot machine e giochi da tavolo ai giochi con croupier dal vivo, ci sono opzioni per soddisfare ogni tipo di scommettitore. Inoltre, il casinò online 1win offre una piattaforma di gioco sicura e affidabile, con pagamenti veloci e un team di assistenza clienti sempre disponibile per aiutarti. Non 1win Italy perdere l’opportunità di giocare al casinò online in italiano con i bonus e le promozioni di 1win Casino!

Promozioni 1win Casino: Come Massimizzare il Tuo Tempo di Gioco al Casinò Online in Italiano

Se stai cercando di massimizzare il tuo tempo di gioco al casinò online 1win in Italia, allora sei nel posto giusto. Ecco alcuni suggerimenti per sfruttare al meglio le promozioni di 1win Casino:
1. Approfitta del bonus di benvenuto: 1win Casino offre un generoso bonus di benvenuto per i nuovi giocatori, quindi assicurati di approfittarne per iniziare il tuo viaggio con un bel vantaggio.
2. Partecipa ai tornei: 1win Casino offre regolarmente tornei di slot e giochi da tavolo con montepremi interessanti. Iscriviti per avere la possibilità di vincere premi in denaro.
3. Sfrutta le offerte di cashback: 1win Casino offre regolarmente offerte di cashback su determinati giochi o per determinati periodi di tempo. Assicurati di tenere d’occhio queste offerte per ottenere un rimborso sulle tue perdite.
4. Utilizza i giri gratis: 1win Casino offre spesso giri gratis su determinati slot. Assicurati di utilizzarli per avere la possibilità di vincere senza rischiare il tuo denaro.
5. Iscriviti alla newsletter: iscriviti alla newsletter di 1win Casino per ricevere aggiornamenti sulle ultime promozioni e offerte speciali.
6. Gioca regolarmente: più giochi, più hai la possibilità di sfruttare le promozioni di 1win Casino. Assicurati di giocare regolarmente per massimizzare il tuo tempo di gioco e aumentare le tue possibilità di vincita.

1win Casino: Approfitta delle Offerte Speciali e Gioca al Casinò Online in Italiano!

Se stai cercando un’esperienza di casinò online di prima classe in Italia, non cercare oltre 1win Casino. Approfitta delle offerte speciali disponibili ora e gioca a una vasta gamma di giochi da casinò online, tra cui slot machine, blackjack, roulette e molto altro. I nuovi giocatori possono anche usufruire di un generoso bonus di benvenuto al momento della registrazione. Con grafica e suoni di alta qualità e un’interfaccia intuitiva, 1win Casino offre un’esperienza di gioco online senza pari. Non perdere l’opportunità di vincere alla grande e unisciti a 1win Casino oggi stesso!

Casinò Online in Italiano con 1win: Non Perderti le Promozioni e Inizia a Giocare!

Se stai cercando un casinò online di prim’ordine in Italia, non cercare oltre 1win! Offriamo una vasta gamma di giochi da casinò emozionanti, tra cui slot machine, giochi da tavolo e molto altro ancora. Non perderti le nostre fantastiche promozioni, tra cui bonus di benvenuto e giri gratis. Iscriviti oggi e inizia a giocare per avere la possibilità di vincere grandi premi! Con 1win, l’esperienza di casinò online è sempre emozionante e conveniente. Non perdere l’opportunità di unirti alla nostra comunità di giocatori soddisfatti. Gioca ora a 1win, il casinò online in italiano che offre le migliori promozioni!

Bonus e Promozioni 1win Casino: Il Tuo Passaporto per il Mondo del Casinò Online in Italiano!

Benvenuti nel mondo di 1win Casino, la tua porta d’ingresso per un’esperienza di gioco online senza pari in Italia. Approfitta dei nostri generosi per aumentare le tue possibilità di vincita e rendere il tuo tempo ancora più divertente. Iscriviti ora e ricevi subito un bonus di benvenuto, oppure partecipa alle nostre promozioni settimanali per avere la possibilità di vincere premi extra. Non perdere l’occasione di esplorare il nostro vasto assortimento di giochi, tra cui slot machine, giochi da tavolo e molto altro ancora. Unisciti a noi oggi e inizia a giocare con stile!

Mi chiamo Marco, ho 35 anni e sono un appassionato di giochi da casinò online. Ho recentemente scoperto 1win Casino e ne sono rimasto entusiasta! Il sito è disponibile in italiano, il che lo rende molto facile da navigare e utilizzare. Mi è piaciuto in particolare il fatto che ci siano molte promozioni disponibili per i giocatori. Ho approfittato di alcune di queste offerte e ho vinto alcuni bei premi! Il servizio clienti è anche eccellente, sempre pronto ad aiutare in qualsiasi momento. Consiglio vivamente 1win Casino a chiunque stia cercando un’esperienza di casinò online di alta qualità. Approfitta delle Promozioni 1win Casino: Gioca al Casinò Online in Italiano!

Ciao, sono Sara, una giocatrice di casinò online di 28 anni. Sono sempre alla ricerca di nuovi siti di casinò su cui giocare e sono felice di aver trovato 1win Casino. Il sito è ben progettato e offre una vasta gamma di giochi tra cui scegliere. Mi è piaciuto particolarmente il fatto che ci siano molte promozioni disponibili per i giocatori. Ho approfittato di alcune di queste offerte e ho vinto alcuni premi fantastici. Il team di assistenza clienti è anche molto reattivo e disponibile, il che è una grande aggiunta. Se stai cercando un casinò online di alta qualità con molte promozioni, consiglio vivamente di provare 1win Casino. Approfitta delle Promozioni 1win Casino: Gioca al Casinò Online in Italiano!

Approfitta delle Promozioni 1win Casino è un invito a non perdere l’opportunità di usufruire delle offerte promozionali del casinò online 1win.
Gioca al Casinò Online in Italiano!, una chiamata all’azione per i giocatori italiani per giocare e vincere alla grande.

Le promozioni di 1win Casino offrono ai giocatori l’opportunità di aumentare le loro vincite e prolungare il loro tempo di gioco.
Non perdere l’occasione di essere parte di questo divertimento e vincita!

Il casinò online 1win è disponibile in italiano, offrendo un’esperienza di gioco senza soluzione di continuità per i giocatori italiani.
Approfitta delle Promozioni 1win Casino e inizia a giocare oggi!

Design and Develop by Ovatheme